#include <stdio.h>
#include <stdlib.h>

#include "./core/Server.h"
#include "./core/Client.h"

using namespace std;

/**
 * Inicia el servidor listo para manejar una conversación entre participantes
 * Recibe como parametro [-d] (Modo Debug)
 */
int runServer(int argc, char **argv) {
	Server server;
	server.run();
	return 0;
}

/**
 * Inicia un participante listo para conectarse al servidor.
 * Recibe como parámetro -n <nick> [-d] (Modo Debug)
 */
int runClient(int argc, char **argv) {
	if (argc < 3 || (argc == 3 && strcmp(argv[1], "-n") != 0) || (argc == 4
			&& (strcmp(argv[1], "-n") != 0 || strcmp(argv[3], "-d") != 0)) ) {
		throw 201;
	}
	Client client(argv[2]);
	client.run();
	return 0;
}

int main(int argc, char **argv) {
	int err = 0;
	try {

		if (strcmp(argv[0], "./servidor") == 0) {
			err = runServer(argc, argv);
		} else {
			err = runClient(argc, argv);
		}
	} catch (int error) {
		switch (error) {
		case 201:
			cerr << "[Participante] Parametros de ejecucion invalidos" << endl;
			break;
		}
	}
	return err;
}

